package com.waitingresult.oop;
/**
 * 面向对象
 * 1. 什么是类
 * 类是对现实生活中一类具有共同属性和行为的事务的抽象
 * 特点:
 * 类是对象的数据类型
 * 类是具有相同属性和行为的一组对象的集合
 * 举例: 人 很抽象的概念, 人类也是 类的一种
 * 2. 什么是对象的属性
 * 特点: 对象具有的各种特征,每个对象的每个属性都拥有特定的值
 * 举例子: 人的属性有, 姓名 年龄
 * 3. 什么是对象的行为
 * 特点: 对象的行为是抽象的事情
 * 举例: 人的行为有 吃饭,睡觉,学习 这些在Java中称之为方法
 * <p>
 * <p>
 * <p>
 * 面向对象的三大特点:
 * 1. 封装
 * 将某些信息隐藏在类的内部, 不允许外部直接访问, 使用private关键字来实现对隐藏信息的操作和访问
 * <p>
 * 将重复的代码,共同的代码, 向上抽取, 抽取成一个方法 就叫封装
 * private 关键字的作用
 * private 是Java中的权限修饰符.
 * 该关键字的意思是：除了包含该成员的类之外，其他任何类都无法访问这个成员。
 * this 关键字的作用
 * this的变量用于指代成员变量
 * 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
 * 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
 * <p>
 * this代表所在类的对象引用,方法被那个对象调用, this就代表那个对象
 * <p>
 * 构造方法:
 * 构造方法时一种特殊的方法, 用于创建对象
 * 主要完成对象数据的初始化功能,也可以用于写一些其他的代码
 * 2. 继承
 * 将子类 和父类 共有,
 * 在子类中使用父类的变量或方法 使用supper 关键字
 * <p>
 * 3. 多态
 * 同一个对象, 在不同时刻表现出来的不同形态,就是多态, 事物的多重形态
 * 多态的前提和提现
 * 1. 有继承/实现关系
 * 2. 有方法的重写
 * 3. 有父类引用指向子类对象
 * 多态访问成员变量, 是使用父类
 * 多态访问成员方法, 是使用子类
 * 4. 抽象类
 * 抽象类和抽象方法都必须要使用abstract 关键字
 * 抽象类 可以有非抽象方法, 也可以有
 * 抽象类里 可以没有抽象方法
 * 有抽象方法的类就一定是抽象类
 * 抽象类的子类要么重写抽象类的方法, 要么本身也成为抽象类
 * 关键字 : abstract
 */